package com.xoa.controller.hr;

import com.xoa.model.hr.HrStaffContract;
import com.xoa.model.hr.HrStaffInfo;
import com.xoa.model.users.Users;
import com.xoa.service.hr.HrStaffContractService;
import com.xoa.util.CookiesUtil;
import com.xoa.util.ToJson;
import com.xoa.util.common.session.SessionUtils;
import com.xoa.util.common.wrapper.BaseWrapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/**
 * 创建作者:   高亚峰
 * 创建日期:   2017/7/13 17:13
 * 类介绍  :
 * 构造参数:
 */
@Controller
@RequestMapping("/hr/contract")
public class HrStaffContractController {

    @Resource
    private HrStaffContractService hrStaffContractService;
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月13日 下午16:40:41
     * 方法介绍:   查询和同详情
     * 参数说明:   ContractId 合同自动递增Id
     * @return    ToJson
     */
    @RequestMapping("/getContractInfo")
    @ResponseBody
    public ToJson<HrStaffContract> getContractInfo(HttpServletRequest request,String contractId){
     return hrStaffContractService.getcontractinfo(request,contractId);
    };
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月13日 下午17:23:41
     * 方法介绍:   合同信息修改
     * 参数说明:   HrStaffContract 参数
     * @return    ToJson
     */
    @RequestMapping("/updateContractInfo")
    @ResponseBody
    public ToJson<Object> updateContractInfo(HttpServletRequest request,HrStaffContract hrStaffContract,String userPriv){
       return hrStaffContractService.updateContractInfo(request,hrStaffContract,userPriv);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月13日 下午18:04:41
     * 方法介绍:   删除合同信息接口
     * 参数说明:    ContractId 合同自动递增Id
     * @return    ToJson
     */
    @RequestMapping("/deleteContractInfo")
    @ResponseBody
    public ToJson<Object> deleteContractInfo(String contractId){
  return hrStaffContractService.deleteContractInfo(contractId);
    }

    @ResponseBody
    @RequestMapping("/piliangExport")
    public ToJson<Object> piliangExport(HttpServletRequest request, HttpServletResponse response,String contractId,HrStaffContract hrStaffContract,String SignstartTime,String SignendTime,String TrialstartTime,String TrialendTime,String MaturitystartTime,String MaturityendTime,String RelievestartTime,String RelieveendTime){
        return hrStaffContractService.piliangExport(request,response,contractId,hrStaffContract,SignstartTime,SignendTime,TrialstartTime,TrialendTime,MaturitystartTime,MaturityendTime,RelievestartTime,RelieveendTime);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月14日 上午09:53:04
     * 方法介绍:   查询合同列表接口
     * 参数说明:   分页
     * @return    ToJson
     */
    @RequestMapping("/getAllContract")
    @ResponseBody
    public ToJson<HrStaffContract> getAllContract(Integer page,Integer pageSize,boolean useFlag,String userId){
       return hrStaffContractService.getAllContract(page,pageSize,useFlag,userId);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月14日 上午10:53:04
     * 方法介绍:   合同管理新建接口
     * 参数说明:   HrStaffContract
     * 参数说明:   UserPrivName 角色
     * @return    ToJson
     */
    @RequestMapping("/addContract")
    @ResponseBody
    public ToJson<Object> addContract(HttpServletRequest request,HrStaffContract hrStaffContract,String userPriv/*,@RequestParam(required = false) MultipartFile[] files*/){
        return hrStaffContractService.addContract(request,hrStaffContract,userPriv);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月14日 下午15:24:04
     * 方法介绍:   查询试用到期的合同
     * 参数说明:   startTime 到期开始时间
     * 参数说明:   endTime 到期结束时间
     * @return    ToJson
     */
    @RequestMapping("/getTrialContract")
    @ResponseBody
    public ToJson<HrStaffContract> getTrialContract(String startTime,String endTime,String status){

      if(status.equals("1")){
          SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();
        Date theDate=calendar.getTime();
        GregorianCalendar gcLast=(GregorianCalendar)Calendar.getInstance();
        gcLast.setTime(theDate);
          gcLast.set(Calendar.DAY_OF_MONTH, 1);
          //获取当月第一天
          startTime=sf.format(gcLast.getTime());
          //获取当月最后一天
          Calendar calendar2 = Calendar.getInstance();
          calendar2.set(Calendar.DATE, calendar.getActualMaximum(calendar.DATE));
           endTime=sf.format(calendar2.getTime());
          return  hrStaffContractService.getTrialContract(startTime,endTime);
      }
     else{
    return  hrStaffContractService.getTrialContract(startTime,endTime);
      }
    };
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月14日 下午16:24:04
     * 方法介绍:   查询合同到期的合同
     * 参数说明:   startTime 到期开始时间
     * 参数说明:   endTime 到期结束时间
     * 参数说明：   hrStaffContract
     * @return    ToJson
     */
    @RequestMapping("/getMaturityContract")
    @ResponseBody
    public ToJson<HrStaffContract> getMaturityContract(HrStaffContract hrStaffContract,String startTime,String endTime,String status){
        if(status.equals("1")){
            SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
            Calendar calendar = Calendar.getInstance();
            Date theDate=calendar.getTime();
            GregorianCalendar gcLast=(GregorianCalendar)Calendar.getInstance();
            gcLast.setTime(theDate);
            gcLast.set(Calendar.DAY_OF_MONTH, 1);
            //获取当月第一天
            startTime=sf.format(gcLast.getTime());
            //获取当月最后一天
            Calendar calendar2 = Calendar.getInstance();
            calendar2.set(Calendar.DATE, calendar.getActualMaximum(calendar.DATE));
            endTime=sf.format(calendar2.getTime());
            return  hrStaffContractService.getMaturityContract(hrStaffContract,startTime,endTime);
        }else{
            return hrStaffContractService.getMaturityContract(hrStaffContract,startTime,endTime);
        }


    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月14日 下午17:50:04
     * 方法介绍:   合同查询接口
     * 参数说明:   SignstartTime 签约开始时间
     * 参数说明:   SignendTime 到期结束时间
     * 参数说明:   TrialstartTime 试用到期开始时间
     * 参数说明:   TrialendTime 试用到期结束时间
     * 参数说明:   MaturitystartTime 合同到期开始时间
     * 参数说明:   MaturityendTime 合同到期结束时间
     * 参数说明:   RelievestartTime 合同解除开始时间
     * 参数说明:   RelieveendTime 合同解除结束时间
     * 参数说明：   hrStaffContract
     * @return    ToJson
     */
    @RequestMapping("/getContract")
    @ResponseBody
    public ToJson<HrStaffContract> getContract(HrStaffContract hrStaffContract,String SignstartTime,String SignendTime,String TrialstartTime,String TrialendTime,String MaturitystartTime,String MaturityendTime,String RelievestartTime,String RelieveendTime,Integer page,Integer pageSize,boolean useFlag){
        return hrStaffContractService.getContract(hrStaffContract,SignstartTime,SignendTime,TrialstartTime,TrialendTime,MaturitystartTime,MaturityendTime,RelievestartTime,RelieveendTime,page,pageSize,useFlag);
    }

    /**
     * @作者：张航宁
     * @时间：2017/7/25
     * @介绍：批量删除接口
     * @参数：ids
     */
    @ResponseBody
    @RequestMapping("/deleteByIds")
    public ToJson<HrStaffContract> deleteByIds(String ids){
        return hrStaffContractService.deleteByIds(ids);
    }


    /**
     * @作者: 杨超
     * @时间：2017/8/14
     * @介绍：查询
     * @return
     */
    @ResponseBody
    @RequestMapping("/getContractAnalysis")
    public BaseWrapper getContractAnalysis(){
        return hrStaffContractService.getContractAnalysis();
    }

    /**
     * 创建作者:   季佳伟
     * 创建日期:   2017年11月17日 上午11:30:41
     * 方法介绍:   查询登录人的合同
     * 参数说明:   ContractId
     * @return    HrStaffContract
     */
    @ResponseBody
    @RequestMapping("/getContractInfoByStaffName")
    public ToJson<HrStaffContract> getContractInfoByStaffName(HttpServletRequest request){
        Cookie redisSessionId = CookiesUtil.getCookieByName(request,"redisSessionId");
        Users users = SessionUtils.getSessionInfo(request.getSession(),Users.class,new Users(),redisSessionId);

        return hrStaffContractService.getContractInfoByStaffName(users);
    }

    @ResponseBody
    @RequestMapping("/getHrCountByType")
    public BaseWrapper  getHrCountByType(HttpServletRequest request){
        return hrStaffContractService.getHrCountByType();
    }

    @ResponseBody
    @RequestMapping("/imporController")
    public ToJson<HrStaffInfo> imporController(MultipartFile file, HttpServletRequest request, HttpServletResponse response, HttpSession session){
        return hrStaffContractService.imporController(file, request, response, session);
    }
}
